#include <iostream>

// 7. 整数反转
// 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
//如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ，就返回 0。

class Solution {
public:
    int reverse(int x) {
        long ans = 0;
        long y = x; // long类型：防止反转过程溢出
        int d;
        while(y != 0) {
            d = y % 10;
            y = y / 10;
            ans = ans * 10 + d; // 低位变高位实现反转
        }
        if(ans < INT_MIN || ans > INT_MAX)
            return 0;
        return ans;
    }
};

int main() {
    std::cout << Solution().reverse(123) << std::endl;
    std::cout << Solution().reverse(-123) << std::endl;
    std::cout << Solution().reverse(120) << std::endl;
    std::cout << Solution().reverse(0) << std::endl;
    return 0;
}
